<template>
  <div class="number-container d-flex justify-content-center align-items-center">
    <!-- 减 1 的按钮 -->
    <button type="button" class="btn btn-light btn-sm" @click="sub">-</button>
    <!-- 购买的数量 -->
    <span class="number-box">{{ num }}</span>
    <!-- 加 1 的按钮 -->
    <button type="button" class="btn btn-light btn-sm" @click="add">+</button>
  </div>
</template>

<script>
import bus from '@/eventBus.js'

export default {
  props: {
    // 把商品的id传递过来，后面使用eventBus方案把商品数量传递给App.vue时
    // 需要通知App组件，更新对应商品的数量

    // 插槽改造
    // id: {
    //   type: Number,
    //   require: true
    // },
    num: {
      type: Number,
      default: 1
    }
  },
  methods: {
    // 点击 +1 按钮
    // this.num++             num是父组件传递的只读属性，不能修改
    // 直接发送数据到App.vue，发送的格式为 { id, value }
    // 其中id为商品id，value是更新之后的购买数量，当值为固定时，使用const定义变量
    // add() {
    //   const obj = {
    //     id: this.id,
    //     value: this.num + 1
    //   }
    //   bus.$emit('num-change', obj)
    // },
    // 点击 -1 按钮，处理方法同 +1 按钮
    // sub() {
    //   if (this.num === 1) {
    //     alert('最小购买数量为1哦~')
    //     return
    //   }
    //   const obj = {
    //     id: this.id,
    //     value: this.num - 1
    //   }
    //   bus.$emit('num-change', obj)
    // },

    // 插槽改造
    add() {
      this.$emit('num-change', this.num + 1)
    },
    sub() {
      if (this.num === 1) {
        alert('最小购买数量为1哦~')
        return
      }
      this.$emit('num-change', this.num - 1)
    },
  }
}
</script>

<style lang="less" scoped>
.number-box {
  min-width: 30px;
  text-align: center;
  margin: 0 5px;
  font-size: 12px;
}

.btn-sm {
  width: 30px;
}
</style>
